The Transfers class provides comprehensive access to player transfer data for professional football teams across Europe’s top 5 leagues. It enables tracking both incoming and outgoing transfers for any team in a given season.
Transfer data includes player names, positions, dates, and the clubs involved in each transfer, supporting seasons from the 1920s-1960s onwards depending on the league.
from premier_league import Transfers# Get current season transferstransfers = Transfers(league="Premier League")# Print transfer table for a teamtransfers.print_transfer_table("Chelsea")
Arsenal >> Transfers 2023-2024 In:+--------+------------------+----------+----------------------+| Date | Name | Position | Club |+--------+------------------+----------+----------------------+| 07/01 | Declan Rice | MF | West Ham United || 07/15 | Kai Havertz | FW | Chelsea |+--------+------------------+----------+----------------------+Arsenal >> Transfers 2023-2024 Out:+--------+------------------+----------+----------------------+| Date | Name | Position | Club |+--------+------------------+----------+----------------------+| 06/30 | Granit Xhaka | MF | Bayer Leverkusen |+--------+------------------+----------+----------------------+
Get incoming transfers for a specific team as a structured list.
transfers = Transfers(league="Bundesliga")incoming = transfers.transfer_in_table("Bayern Munich")# First row is headersheaders = incoming[0]print(headers) # ['Date', 'Name', 'Position', 'Club']# Process each transferfor transfer in incoming[1:]: date, player_name, position, from_club = transfer print(f"{player_name} joined from {from_club}")
Get outgoing transfers for a specific team as a structured list.
transfers = Transfers( league="Ligue 1", target_season="2022-2023")outgoing = transfers.transfer_out_table("PSG")print("Players who left PSG:")for transfer in outgoing[1:]: date, player_name, position, to_club = transfer print(f"{player_name} ({position}) → {to_club}")
Get a list of all teams in the specified league and season.
transfers = Transfers( league="Premier League", target_season="2023-2024")teams = transfers.get_all_current_teams()print(f"Teams in Premier League 2023-2024: {len(teams)}")for team in sorted(teams): print(f" - {team}")
from premier_league import Transferstransfers = Transfers(league="Serie A")# Find all striker signingsteams = transfers.get_all_current_teams()striker_signings = []for team in teams: transfers_in = transfers.transfer_in_table(team) for transfer in transfers_in[1:]: date, name, position, from_club = transfer if position == "FW": striker_signings.append({ 'player': name, 'to': team, 'from': from_club, 'date': date })print(f"Total striker signings in Serie A: {len(striker_signings)}\n")for signing in striker_signings[:10]: print(f"{signing['player']}: {signing['from']} → {signing['to']}")
from premier_league import Transfersfrom collections import Countertransfers = Transfers( league="Premier League", target_season="2023-2024")teams = transfers.get_all_current_teams()# Track which leagues teams are buying fromsource_leagues = []for team in teams: transfers_in = transfers.transfer_in_table(team) for transfer in transfers_in[1:]: from_club = transfer[3] source_leagues.append(from_club)# Count most common source clubscommon_sources = Counter(source_leagues).most_common(10)print("Most Common Transfer Sources (2023-2024):\n")for club, count in common_sources: print(f"{club}: {count} players")
from premier_league import Transfers# Track transfers between leaguespl_transfers = Transfers(league="Premier League", target_season="2023-2024")laliga_transfers = Transfers(league="La Liga", target_season="2023-2024")pl_teams = pl_transfers.get_all_current_teams()laliga_teams = laliga_transfers.get_all_current_teams()print("Transfers from La Liga to Premier League:\n")for pl_team in pl_teams: transfers_in = pl_transfers.transfer_in_table(pl_team) for transfer in transfers_in[1:]: date, name, position, from_club = transfer # Check if from_club is a La Liga team from_laliga = any(laliga_team.lower() in from_club.lower() for laliga_team in laliga_teams) if from_laliga: print(f"{name} ({position}): {from_club} → {pl_team}")
from premier_league import Transfers, TeamNotFoundErrortransfers = Transfers( league="Bundesliga", target_season="2023-2024")# Handle team not foundtry: transfers.print_transfer_table("Invalid Team Name")except TeamNotFoundError as e: print(f"Error: {e}") print("\nAvailable teams:") teams = transfers.get_all_current_teams() for team in sorted(teams): print(f" - {team}")# Use fuzzy matchingteam_search = "bayern"matched_team = transfers.find_team(team_search)if matched_team: print(f"\nFound: {matched_team}") transfers.print_transfer_table(matched_team)else: print(f"No team found matching '{team_search}'")
Use the find_team() method for fuzzy matching when you’re unsure of the exact team name. It performs case-insensitive substring matching.
The module automatically handles multi-word club names and special formatting in transfer data, providing clean and consistent output.
Some historical seasons may have incomplete transfer data. Always verify data completeness for critical analysis.